package org.example.projecttwo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.example.projecttwo.entity.Advertisement;

import java.util.List;

/**
 * <p>
 * 广告表 服务类
 * </p>
 *
 * @author nn
 * @since 2025-11-01
 */
public interface IAdvertisementService extends IService<Advertisement> {

    /**
     * 统计已上架的广告数量
     * @return 数量
     */
    int countPublishedAds();

    /**
     * 分页查询广告列表（支持状态筛选）
     * @param page 分页参数
     * @param status 状态: 0=全部，1=待上架，2=已上架，3=已下架
     * @param keyword 搜索关键字
     * @return 分页结果
     */
    IPage<Advertisement> pageByStatus(Page<Advertisement> page, Integer status,String keyword);

    /**
     * 更新广告状态
     * @param id 广告ID
     * @param status 状态（1/2/3）
     */
    void updateStatus(Long id, Integer status);

    /**
     * 批量更新广告状态
     * @param ids 广告ID列表
     * @param status 状态（1/2/3）
     */
    void batchUpdateStatus(List<Long> ids, Integer status);

    /**
     * 更新广告排序序号
     * @param adIds 广告ID列表
     */
    void updateSortOrder(List<Long> adIds);

    /**
     * 更新单个广告的排序序号（智能调整其他广告序号）
     * @param id 要更新的广告ID
     * @param newSortOrder 新的排序序号
     * 确保排序序号的连续性和唯一性
     */
    void updateSingleSortOrder(Long id,Integer newSortOrder);
}
